Casper CBC: Initial Message
description
Some protocols need initial message (e.g. genesis block in Blockchain protocol).
1. How to handle initial message for unified mannar(same interface) in all protocols?
2. Additional data is required?
The reasoning for this is that a validator's view is created when the validator is, but some initial message schemes require all of the validators to be created before creating the initial messages, so we must treat these as two separate steps.
Add validator_set to message
Validators are passed an initial_message or genesis
ValidatorSet becomes part of the message
For static, it just stays constant across all messages in the protocol
For validator set rotation, it can change via the message (under some rules).
unsure how this ripples through the codebase. specifically how the oracles handle the validator_sets from messages.
there was a version of this PR where the genesis was defined in the Protocol. The issue I had with this was that it later makes it much harder to have a weakly subjective deal where validators start with different genesis blocks - but for it might make sense to not worry about tha
For Blockchain, it would be the genesis block initially, but could later be the most recent finalized block when the validator signs on. I guess it would just be the most recent finalized block where most recent finalized starts as the genesis.
I think we can define a starting validator set in some globally defined genesis block and work to rotating validator sets from there
questions
How to pass initial message to all validators?
A validator create it and send other validators?
The protocol itself has the common initial message and all validator use it from client code?
What kind of data the initial message should include?
consensus
For binary randomly 0 or 1, For blockchain genesis block, etc?
(relationship with validator rotation?)
nrryuya.icon > Is it validator rotation?